/*
 *************************************************************************
 * @source  : jquery.tv.js
 * @desc    : tving 사이트에서 사용하는 공통모듈 정의
 *----------------------------------------------------------
 * CJ제일제당 시스템
 * Copyright(c) 2010 CJ Systems,  All rights reserved.
 *----------------------------------------------------------
 * VER  DATE         AUTHOR      DESCRIPTION
 * ---  -----------  ----------  ------------------------------
 * 1.0  2011. 1. 26.       김형욱            최초 작성
 *************************************************************************
 */
(function($) {
	var commonFn = null;
	//div block
	
	//이메일 형식 체크
	$.isEmail = function(strValue)
    {
		var regExp = /[0-9a-zA-Z][_0-9a-zA-Z-]*@[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+){1,2}$/;
		 
        //입력을 안했다면
        if(strValue.lenght == 0)
        {return false;}

        //데이터 형식이 맞지 않다면
        if (!strValue.match(regExp))
       {return false;}
        return true;
    },
    // 자동으로 탭으로 넘어가도록 함
    $.fn.AutoTab =
    	function() {
    		return this.each(function() {
    			$(this).keyup(function(e) {
    				if($(this).attr("maxlength")!=undefined){
        				if($(this).attr("maxlength")==$(this).val().length){
        					 var fields = $("input, textarea, select");
        					  for(var i=0;i<fields.length;i++) {
        					    if(fields[i].id == $(this).attr("id")){
        					      for(i=i+1;i<fields.length;i++){
        					        if(fields[i].type != 'hidden'){
        					          fields[i].focus();
        					          fields[i].select();
        					          return    
        					        }
        					      }
        					      break;
        					    }
        					  }
        				}
    				}
    			});
    		});
    	},
	$.replaceAll =function(val, str1,str2){
		return val.split(str1).join(str2);;
	},
    $.popUrl = function(url,pwidth,pheight,nm){
    	var popnm = "cscenter";
		if(nm != undefined && ""!=nm){
			popnm=nm;
		}
		var windowWidth = pwidth;
		var windowHeight = pheight;

		var leftPosition = (screen.width) ? (screen.width-windowWidth)/2 : 0;
		var topPosition = (screen.height) ? (screen.height-windowHeight)/2 : 0;
		return window.open(url,popnm,'width=' + windowWidth + ',height=' + windowHeight + ',top=' + topPosition + ',left='+ leftPosition +',toolbar=no,titlebar=no,resizable=no,menubar=no,scrollbars=yes');
    },
	$.frp =function(val, precision){
    	//절삭
		var p = Math.pow(10, precision);
		return Math.floor(val*p)/p;
	},
    $.scrollDown = function(str)
    {
    	//스크롤 해당위치로 이동
    	$("body").animate( {scrollTop: $("#"+str).offset().top}, 600);
    },
    $.dtInit = function(str)
    {
        //데이터 초기화
    	//아이디 하위자료 초기화
		$('#'+str).find("input:text").val("");
		$('#'+str).find("select").each(function (){
			$(this).find("option:eq(0)").attr("selected",true);	
		});
		
		$('#'+str).find("textarea").val("");
		
    	//아이디 하위자료 초기화
		$('.'+str).find("input:text").val("");
		$('.'+str).find("select").each(function (){
			$(this).find("option:eq(0)").attr("selected",true);	
		});
		
		$('.'+str).find("textarea").val("");
    },
	$.comma = function(x) {
		var txtNumber = '' + x;
		if (isNaN(txtNumber) || txtNumber == ""){
			return x;
		}else{
			var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
			var arrNumber = txtNumber.split('.');
			arrNumber[0] += '.';
			do{
				arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
			}while (rxSplit.test(arrNumber[0]));
			
			if (arrNumber.length > 1){
				return arrNumber.join('');
			}else{
				return arrNumber[0].split('.')[0];
			}
		}
	},
	$.ssnChk = function(x) {
		//주민등록번호 체크
		if (x == "" || x == null || x.length != 13) {
			return false;
		}

		var jumin1 = x.substr(0, 6);
		var jumin2 = x.substr(6, 7);
		var yy = jumin1.substr(0, 2); // 년도
		var mm = jumin1.substr(2, 2); // 월
		var dd = jumin1.substr(4, 2); // 일
		var genda = jumin2.substr(0, 1); // 성별
		
		var msg, ss, cc;
//		// 숫자가 아닌 것을 입력한 경우
//		if (!isNumeric(jumin1)) {
//			alert("주민등록번호 앞자리를 숫자로 입력하세요.");
//			return false;
//		}

		// 길이가 6이 아닌 경우
		if (jumin1.length != 6) {
			alert("주민등록번호 앞자리를 다시 입력하세요.");
			return false;
		}

		// 첫번째 자료에서 연월일(YYMMDD) 형식 중 기본 구성 검사
		if (yy < "00" || yy > "99" || mm < "01" || mm > "12"
				|| dd < "01" || dd > "31") {
			alert("주민등록번호 앞자리를 다시 입력하세요.");
			return false;
		}
		// 숫자가 아닌 것을 입력한 경우
//		if (!isNumeric(jumin2)) {
//			alert("주민등록번호 뒷자리를 숫자로 입력하세요.");
//			return false;
//		}
		
		// 길이가 7이 아닌 경우
		if (jumin2.length != 7) {
			alert("주민등록번호 뒷자리를 다시 입력하세요.");
			return false;
		}

		// 성별부분이 1 ~ 4 가 아닌 경우
		if (genda < "1" || genda > "4") {
			alert("주민등록번호 뒷자리를 다시 입력하세요.");
			return false;
		}

		// 연도 계산 - 1 또는 2: 1900년대, 3 또는 4: 2000년대
		cc = (genda == "1" || genda == "2") ? "19" : "20";
		// 첫번째 자료에서 연월일(YYMMDD) 형식 중 날짜 형식 검사
		
		var iDate = cc+yy+mm+dd;
		if (iDate.length != 8) {
			alert("주민등록번호 앞자리를 다시 입력하세요.");
			return false;
		}
		
		oDate = new Date();
		oDate.setFullYear(iDate.substring(0, 4));
		oDate.setMonth(parseInt(iDate.substring(4, 6)) - 1);
		oDate.setDate(iDate.substring(6));
		if (oDate.getFullYear() != iDate.substring(0, 4)
				|| oDate.getMonth() + 1 != iDate.substring(4, 6)
				|| oDate.getDate() != iDate.substring(6)) {
			alert("주민등록번호 앞자리를 다시 입력하세요.");
			return false;
		}

//		// Check Digit 검사
//		if (!isSSN(jumin1, jumin2)) {
//			alert("입력한 주민등록번호를 검토한 후, 다시 입력하세요.");
//			return false;
//		}
		
		 n = 2;
		  sum = 0;
		  for (i=0; i<jumin1.length; i++)
		    sum += parseInt(jumin1.substr(i, 1)) * n++;
		  for (i=0; i<jumin2.length-1; i++) {
		    sum += parseInt(jumin2.substr(i, 1)) * n++;
		    if (n == 10) n = 2;
		  }
		  
		  c = 11 - sum % 11;
		  if (c == 11) c = 1;
		  if (c == 10) c = 0;
		  if (c != parseInt(jumin2.substr(6, 1))) return false;
		  else return true;

		
		return true;

	},
    // 숫자만 입력하게함
    $.fn.ForceNumericOnly =
    	function(chkComma) {
    		return this.each(function() {
    			$(this).keydown(function(e) {
    				var key = e.charCode || e.keyCode || 0;
    				// allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
    				return (
    									key == 8 ||
    									key == 9 ||
    									key == 189 ||
    									key == 46 ||
    									(key >= 37 && key <= 40) ||
    									(key >= 48 && key <= 57) ||
    									(key >= 96 && key <= 105));
    			});
    			
    			if(chkComma!=undefined && chkComma){
    				$(this).focusout(function() { $(this).val($(this).val().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); });
        			$(this).focusin(function() { $(this).val($(this).val().replace(/\,/g, '')); });
    			}
    		});
    	},
    $.getJson=function(option){

		var default1 = {
				type : "get",
				url: null,
				dataType: "json",
				data : null,
				timeout: 5000,
				success : null,
				error : function(error){
					alert('접속지연이 발생했습니다. 몇분후에 다시 확인해주세요\n'+error);
				}
			};
			
			var opt = $.extend(default1, option);
			$.ajax({
				type: opt.type,
				url:  opt.url,
				dataType: opt.dataType,
				data: opt.data,
				success: opt.success,
				error: opt.error
			});
	};
})(jQuery);
 
/**  * string String::cut(int len)  * 한글도 고려하여 길이 리턴  */   
String.prototype.cut = function(len) {         var str = this;         var s = 0;         for (var i=0; i<str.length; i++) {                 s += (str.charCodeAt(i) > 128) ? 2 : 1;                 if (s > len) return str.substring(0,i) + "...";         }         return str;  }
String.prototype.cut2 = function(len) {         var str = this;         var s = 0;         for (var i=0; i<str.length; i++) {                 s += (str.charCodeAt(i) > 128) ? 2 : 1;                if (s > len) return str.substring(0,i);       }         return str;  }
/**  * bool String::bytes(void)  * 해당스트링의 바이트단위 길이를 리턴  */  
String.prototype.bytes = function() {         var str = this;         var s = 0;         for (var i=0; i<str.length; i++) s += (str.charCodeAt(i) > 128) ? 2 : 1;         return s;  }    